热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

R`+`运算符如何根据类而知道不同的行为?

如何解决《R`+`运算符如何根据类而知道不同的行为?》经验,为你挑选了1个好方法。

这是lubridate包装中的一种方法。

> getMethod("month<-")
Method Definition (Class "derivedDefaultMethod"):

  function (x, value)
  {
    if (!is.numeric(value)) {
      value <- pmatch(tolower(value), c("january", "february",
                                        "march", "june", "july", "august", "september", "october",
                                        "november", "december"))
    }
    x <- x + months(value - month(x))
  }

我的问题是+运算符的最后一行。运算符的行为取决于的类别x。R如何知道要这样做?我如何查看其源代码+

> library(lubridate)
> 
> customFUN <- function (x, value){
+   x <- x + months(value - month(x))
+   return(x)
+ }
> 
> 
> init_datePOSIX <- as.POSIXct("2017-11-01")
> init_dateDate <- as.Date("2017-11-01")
> 
> customFUN(init_datePOSIX, 12)
[1] "2017-11-01 PDT"
> customFUN(init_dateDate, 12)
[1] "2017-12-01"

我的会话信息:

> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MOnETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHOnE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lubridate_1.7.1

loaded via a namespace (and not attached):
[1] magrittr_1.5  tools_3.3.3   yaml_2.2.0    Rcpp_1.0.0    stringi_1.3.2 stringr_1.3.1

zacdav.. 5

+运营商真的就像任何其他的功能,并能作这样的处理。

您可以+通过键入以下内容查看源代码:

`+`

此外,您可以+通过键入以下命令查看各种方法:

methods(`+`)

调用函数时,将检查对象的类以查看应调用的方法。当存在多个类时,第一个匹配方法将从这些类中获取。

因此,您可以定义自己的方法 +

`+.custom` <- function(e1, e2) {
  paste0(e1, e2)
}

x <- 1
class(x) <- c("custom", "numeric")

x + x

在这里,我们覆盖了x要添加其他类的类"custom",您可以看到该行为默认为新定义的+.custom

但是,该值对于其他尚未定义的方法仍然可以正常使用(数字),请尝试以下代码:

x / 10 * 500

其他阅读: https : //stat.ethz.ch/R-manual/R-patched/library/base/html/UseMethod.html



1> zacdav..:

+运营商真的就像任何其他的功能,并能作这样的处理。

您可以+通过键入以下内容查看源代码:

`+`

此外,您可以+通过键入以下命令查看各种方法:

methods(`+`)

调用函数时,将检查对象的类以查看应调用的方法。当存在多个类时,第一个匹配方法将从这些类中获取。

因此,您可以定义自己的方法 +

`+.custom` <- function(e1, e2) {
  paste0(e1, e2)
}

x <- 1
class(x) <- c("custom", "numeric")

x + x

在这里,我们覆盖了x要添加其他类的类"custom",您可以看到该行为默认为新定义的+.custom

但是,该值对于其他尚未定义的方法仍然可以正常使用(数字),请尝试以下代码:

x / 10 * 500

其他阅读: https : //stat.ethz.ch/R-manual/R-patched/library/base/html/UseMethod.html


`help(“ groupGeneric”)`也很重要。
推荐阅读
  • 重装WIN7之后使用UbuntuLiveCD修复grub2双系统引导拿起ubuntu启动光盘启动进入试用ubuntu,打开终端输入命令sudofdisk-l#查看我u ... [详细]
  • Docker从安装到入门到项目部署
    容器化的时代你怎么可 ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • 只能输入数字的TextBox
    只能接受数字1usingSystem;2usingSystem.Text;3usingSystem.Web;4usingSystem.Web.UI;5usingSystem.Web ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • Firefox下导致错误,case没有列举所有情况转载于:https:www.cnblogs.comwebfuryroadp46 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • Shell脚本统计文件行数转自http:www.jb51.netarticle61943.htm示例:row_count.sh文件awk{printNR}row_co ... [详细]
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • [ToneTuneToolkit][022]
    #regionEnvironmentWindows1021H1Unity2020.3.30f1c1LTSVSCode1.67.2ToneTuneToolkit下载地址 https: ... [详细]
  • 正月十五后第一贴:网页设计素材倾情奉献(附下载源文件)
    昨晚通宵把本该年前完成的项目中,最后两模块搞完.浏览整个系统,可以用惨不忍睹来形容,功能上实现是没问题,不过,页面布局,美化等,就太差的忒多了.于是google之,找到的很少, ... [详细]
  • linux文件系统和挂载
    创建ISO文件cpdevcdrom目的地.isomkfs命令生成对应·的文件系统但是使用mkfs没有办法修该生成的系统文件的某些特性,例如标记LABEL,如果强行修改会导致文件里面 ... [详细]
  • 模仿邮件登录系统
    模仿邮件登录系统码云代码库:https:gitee.compinaomansgiteemail_login.git实验结果图:验证用户名、密码不能为空,并提示用户名或密码错误提示用 ... [详细]
  • handler机制_Handler机制与原理
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Handler机制与原理相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
mobiledu2502926037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有